package com.example.victory.common.web;

import com.cgws.fintech.sdk.common.exception.GlobalError;

/**
 * 通用web请求返回数据结构，如自行提供Controller，请尽量将该对象作为@RequestMapping方法的返回值
 */
public class WebResponse<T> {

    /**
     * 返回码
     */
    private int code;

    /**
     * 返回码消息
     */
    private String message;

    /**
     * 返回数据
     */
    private T data;

    /**
     * 成功
     */
    public static <T> WebResponse<T> ok() {
        return initOk(null);
    }

    /**
     * 成功，设置返回数据
     *
     * @param data 成功返回的数据
     */
    public static <T> WebResponse<T> ok(T data) {
        return initOk(data);
    }

    private static <T> WebResponse initOk(T t) {
        WebResponse<T> webResponse = new WebResponse();
        webResponse.setCode(0);
        webResponse.setMessage("请求成功");
        if (t != null) {
            webResponse.setData(t);
        }
        return webResponse;
    }

    /**
     * 失败
     *
     * @param globalError 错误码
     */
    public static <T> WebResponse<T> fail(GlobalError globalError) {
        WebResponse<T> webResponse = new WebResponse();
        if (globalError == null) {
            webResponse.setCode(-1);
            webResponse.setMessage("未知错误");
        } else {
            webResponse.setCode(globalError.getCode());
            webResponse.setMessage(globalError.getZh_CN());
        }
        return webResponse;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

}
